The present invention relates to computer animation and more particularly to techniques for customizing the appearance and behavior of widgets used for manipulating models and storing the customizations for later use.
Software systems or packages that enable manipulation of an object in a virtual 2-D or 3-D space generally provide a set of controls or “widgets” that enable a user of the package to carry out the manipulations. Such packages are used in various fields including computer aided design, computer animation, and the like. For example, most animation software packages provide a set of widgets that allow the user to directly transform (e.g., change position, scale, change orientation) computer generated image (CGI) models in virtual 3-D space.
Each widget may comprise one or more “manipulators” that allow the user to control model transformation. A user can “grab” a manipulator of a widget using a computer cursor and move the manipulator in a desired direction to affect the desired transform or manipulation of the model.
Conventionally, widgets and their manipulators are drawn in a way that indicates what transformations can be achieved by a user by using the widgets. Designers of the widgets generally rely on a fixed “language” of shape and color to indicate the range of use of each widget to the user. The standard widget designs are well-understood by some users, but less well-known by others. Additionally, the fixed nature of the design “language” means that widgets are generally designed to meet a single “best guess” requirement case.
For example, FIG. 1 depicts an arcball rotate widget 100 that may be used to transform an object. Widget 100 depicted in FIG. 1 comprises multiple manipulators 102, 104, 106, 108, 110, and 112 offering various degrees of transformation. Each manipulator is represented as a “steering wheel” style half-ring. A user can grab a manipulator and move it along the ring in the desired direction to achieve a desired transformation.
The widget design depicted in FIG. 1 may work well for manipulating a single object floating free in virtual space. However, conventional techniques of displaying widgets do not work adequately for complex models comprising multiple objects or multiple points of control that may be in close proximity. In such complex models, multiple widgets may need to be displayed concurrently to control each object and control point. In such situations, the minimum screen area necessary to draw the standard widgets at a reasonable size is generally greater than the space between the control points or objects. As a result, the widgets drawn using conventional techniques tend to overlap and/or occlude each other, leading to control confusion on part of the user, and eventually resulting in inoperability of the widgets.
Some software packages work around the above-mentioned problem by simply not allowing more than one widget to be displayed at a time. However, this drastically reduces the ability of the user to manipulate a model in an efficient manner. Thus, conventional techniques of drawing widgets fail to adequately provide solutions for drawing widgets concurrently in a manner that is usable.